Prior computer platforms have been symmetric multi-processor (SMP) arrangements where multiple central processing units (CPUs) run a single copy of the operating system (OS). The OS provides time sharing services to allow multiple applications to run. However, this arrangement permits the applications to interfere with each other. For example, if the system is running an accounting application, the accounting application can allocate all the memory in the system, as well as use all the processors that the OS can allocate. Then, when some other application needs processors or memory, for example a manufacturing application, it would not be able to allocate any memory or processors for its needs, and therefore would freeze. Thus, the manufacturing application may be frozen or impacted by the accounting application. This arrangement also leaves the system vulnerable to failures. Any problem with one application could corrupt the resources for all applications.
A known solution to this problem is to separate the computer system into partitions or protected domains. Depending on the type of partitioning implemented, a computer system's resources may be effectively placed into separate functional blocks wherein resources in one block do not have direct access to resources in another block. As described further below, certain types of partitioning may completely isolate resources in each partition such that an application operating in one partition has no access to resources in another partition. Other types of partitioning may be less restrictive such that certain resources may be shared across a plurality of different partitions. In general, partitioning computer resources may effectively prevent one application from using the entire system resources, as well as contain faults and errors that may arise within a partition. Partitions thus allow multiple OSs and applications to coexist on a single box (or set of computer resources) and be reliably protected from each other's failures and, for the most part, use of system resources.
Partitioning techniques range from those deeply rooted in the system's physical hardware to others that are entirely software based. One type of partitioning is known as “hard partitioning” (or “physical partitioning”) which is a physical partition of a computer that divides the computer into groups of cell boards where each group operates independently of other groups. Various different cellular systems are available that provide cells that are physically partitioned from each other, including as an example the server available from Hewlett-Packard Company commercially known as 9000 Superdome. Generally, physical (or hard) partitions rely on the structure of the underlying system hardware and components, such as processor and memory modules, and partition boundaries are enforced by system electronics, such as crossbar switches.
Various hard partitioning solutions are available in the existing art for providing complete hardware and electrical isolation between different partitions, including a solution commercially known as “nPartitions,” which is available from Hewlett-Packard Company. The nPartition solution enables a single server complex, such as Hewlett-Packard Company's 9000 Superdome server, to be configured as one large system or as multiple smaller systems. These hard partitions are designed to provide for complete electrical and software isolation. For organizations where high availability is critical, hard partitioning ensures that any fault within one partition cannot impact any other partition. Applications running within hard partitions are not subject to hardware or software events in other partitions.
Each nPartition has one or more cells (containing processors and memory) that are assigned to the partition for its exclusive use. Any input/output (“I/O”) chassis that is attached to a cell belonging to a partition also is assigned to the partition. Generally, each chassis has Peripheral Component Interconnect (“PCI”) card slots plus any I/O cards and attached devices, and may also have core I/O. Since each nPartition has its own Central Processing Unit (“CPU”), memory, and I/O resources consisting of the resources of the cells allocated to the nPartition, resources may be removed from one nPartition and added to another without having to physically remove and add hardware (e.g., by re-defining the resources (cells) allocated to each nPartition). Additionally, dynamic creation and modification of nPartitions is supported. Each nPartition operates in such a manner that it can be totally isolated from other hard partitions. Each nPartition executes a single OS image (or instance), thus providing software isolation. Alternate nPartitions may, therefore, be executing different versions of the OS. Further, different types of OSs, such as HP-UX™, LINUX, and Microsoft WINDOWS™, may be executing in different nPartitions.
In view of the above, through hard partitioning, applications and operating environments execute in system partitions that are electrically isolated and protected from one another by hardware separation. As such, hardware failures are confined to the partition in which they occur. Moreover, the majority of hardware upgrades require that only the affected partitions be brought down, not the entire system. The reconfiguration or rebooting of an individual hard partition does not require a reboot of the entire system. Thus, the hard partitioning approach has the advantage of being able to isolate many hardware failures in addition to software problems. However, it is only as granular as the modules on which it is based. Many hard partition solutions do not allow for partitions to be formed with modules that have less than four (4) processors and a gigabyte or more of memory. Thus, the flexibility of configuring hard partitions is often limited. To obtain finer granularity, a hard partition can be further divided into “soft partitions” or “virtual partitions,” which are described further below.
Another type of partitioning is known as “soft partitioning” (sometimes referred to as “logical partitioning”), which enables multiple instances of an OS to run simultaneously on one computer by dividing the computer into soft partitions. In soft partitioning, software is used to configure and supervise various partitions. Thus, rather than partitioning resources through physical partitioning (e.g., in which the hardware enforces the partitions), a software supervisory layer may be implemented to define partitions and assign the system's resources that are to be reserved for each partition as well as any resources that are to be shared between the partitions. Through the software configuration, each soft partition may be assigned its own subset of hardware, runs a separate instance of the OS, and hosts its own set of applications. However, soft partitioning does not provide complete physical and electrical isolation. Rather, depending on the configuration of the soft partitions, certain system resources, such as memory, may be shared across various different soft partitions.
Thus, soft partitioning provides much greater flexibility than hard partitions with respect to the configuration of partitions. For instance, the granularity achievable for each soft partition is not based on the hardware modules of a system, as in traditional hard partitioning techniques. Accordingly, finer granularity of partitions may be achieved through soft partitioning. However, the soft partitioning approach is not fully isolated in the manner that hard partitions are, such that many hardware failures may effect multiple soft partitions. An example of a soft partitioning technique is described further in U.S. Pat. No. 6,381,682 titled “METHOD AND APPARATUS FOR DYNAMICALLY SHARING MEMORY IN A MULTIPROCESSOR SYSTEM” and U.S. Pat. No. 6,542,926 titled “SOFTWARE-PARTITIONED MULTI-PROCESSOR SYSTEM WITH FLEXIBLE RESOURCE SHARING LEVELS,” the disclosures of which are hereby incorporated herein by reference.
Another type of partitioning is known as “virtual partitioning.” Virtual partitions (also known as “virtual machines”) may be used to carve up a system's hardware into just about any possible combination, including parts of a CPU, network card, or storage adapter, without regard for any boundaries or physical relationships of the underlying hardware. True virtual machine technology provides OS-agnostic mechanisms based low-level processor virtualization.
An example of a partitioning technique that combines both hard and soft partitioning is known as “vPars” which is available from Hewlett-Packard Company for the HP-UX™ OS. VPars enables a computer to be partitioned into so-called virtual partitions (which are actually “soft partitions” as used herein, rather than fully virtual partitions formed with virtual machine technology) that each runs a separate, isolated instance of HP-UX™. VPars for HP-UX™ is described further in “Installing and Managing HP-UX Virtual Partitions (vPars),” First Edition, November 2001, T1335-90001 (vPars version B.01.00 on HP-UX), the disclosure of which is hereby incorporated herein by reference.
Thus, HP-UX vPars enables multiple instances (versions) of the HP-UX 11i Operating Environment (OE) to run simultaneously on one server with each OE instance hosting its own set of applications in a fully isolated environment. Created through software, these soft partitions provide isolation between application and OSs on single server nodes or within single-system hard partitions. Each vPar partition runs its own image (or instance) of the OS and can fully host its own applications, thus offering complete software isolation. The capability of CPU migration allows users to add and delete dynamically (without reboot) CPUs from one vPar partition to another. This enables applications to coexist in the same server while assuring complete privacy. In addition, functionality is provided to dynamically create, modify, or even delete the isolated operating environments on a running server without interrupting non-related partitions.
In comparison to nPartitions, vPars provides greater flexibility and granularity while nPartitions provides greater fault isolation. Greater flexibility in vPars is achieved with the ability, through use of simple software commands, to add and delete dynamically (without reboot) CPUs from one vPar partition to another. In addition, multiple vPar partitions can function within an nPartition, thus providing greater granularity (e.g., 1 CPU per vPar partition).